// 处理权限验证

import router from '~/router' // 因为router中写的是index.js所以可以省略
import { getToken } from '~/composables/auth'
import { toast, showFullLoading, hideFullLoading } from '~/composables/util'
import store from './store'
import { KnowledgeInfo } from '~/api/manager'

//全局前置守卫
router.beforeEach(async (to, from, next) => {
  // 显示loading

  showFullLoading()
  console.log('全局前置守卫')
  const token = getToken()
  // 未登录 强制跳转到登录页
  if (!token && to.path != '/login') {
    toast('请先登录！', 'error')
    return next({ path: '/login' })
  }
  // 防止重复登陆
  if (token && to.path == '/login') {
    toast('已登录，请勿重复登录！', 'error')
    // 从哪来回哪去
    return next({ path: from.path ? from.path : '/' })
  }

  // 如果用户登录了， 自动获取用户信息，并存储在vuex中
  if (token) {
    await store.dispatch('getUserinfo')
  }

  const knowledgeCache = {};

const getKnowledgeNameById = async (id) => {
  if (knowledgeCache[id]) {
    return knowledgeCache[id]; // 返回缓存的值
  }

  try {
    const res = await KnowledgeInfo(id);
    const name = res.data.knowledge_name;
    knowledgeCache[id] = name; // 缓存知识库名称
    console.log('获取知识库名称成功:', knowledgeCache);
    return name;
  } catch (error) {
    console.error('获取知识库名称失败:', error);
    throw error;
  }
};


  // 设置页面标题
  console.log(to.meta.title)
  // 动态设置页面标题
  if (to.path.startsWith('/knowledge/') && to.params.id) {
    try {
      const knowledgeName = await getKnowledgeNameById(to.params.id); // 假设有一个获取知识库名称的方法
      to.meta.title = `知识库详情 - ${knowledgeName}`;
    } catch (error) {
      console.error('获取知识库名称失败:', error);
      to.meta.title = '知识库详情';
    }
  }
  let title = (to.meta.title ? to.meta.title : 'Vue3 Admin') + ''
  document.title = title

  
  next()
})

//全局后置守卫
router.afterEach((to, from) => hideFullLoading())
